Certain types of devices can be communicatively connected to a host computer. For example, a Universal Serial Bus (USB) external hard drive, a USB flash drive, and an MP3 player are examples of devices that can be connected to a computer. When connected, it is possible for the host to read data from the device and/or to execute software stored on the device. Some devices may have software related to the function of a device. For example, an MP3 player might have a device driver that allows the computer to transfer music files between the host and the device. Or, a USB flash drive might have an encrypted volume that stores files, and may also have software that allows the computer to read the encrypted files.
When a host executes software stored on an external device, the safety of the software is an issue. For example, a device could be used to deliver malware to the host that would damage the host in some way. Even if the software on the device can be presumed to be from a benevolent source, the host could have compatibility problems with the software, or the software could have vulnerabilities.
The operators of different hosts may have different assessments of the risks of using a particular piece of software. For example, some hosts may want to use the newest version of software on the theory that the newest version provides the greatest security and has the fewest bugs. Other hosts may want to use a specific older version, since that version may have been tested for compatibility with the host. Some hosts may want to use the newest version of the software, but may not have a copy of the software. In general, there are various differences among hosts in terms of what software they will accept from a portable device.